//package com.origin.chaos.framework.core;
// TODO: 2021/7/16 后续需要加上定时将画布帧保存的功能，实现回放
//import java.awt.*;
//import java.util.concurrent.ExecutorService;
//import java.util.concurrent.LinkedBlockingQueue;
//import java.util.concurrent.ThreadPoolExecutor;
//import java.util.concurrent.TimeUnit;
//import java.util.concurrent.atomic.AtomicInteger;
//
///**
// * @author: tao.ding
// * @date 2021-07-02
// */
//public class PixelCanvasDecorator implements PixelCanvas {
//
//    private static final long MAX_PUSH_FILE_IDLE_TIME = 10000;
//
//    /**
//     * 推送文件的线程
//     */
//    private static final ExecutorService PUSH_FILE_EXECUTOR_SERVICE = new ThreadPoolExecutor(10, 10,
//            0L, TimeUnit.MILLISECONDS,
//            new LinkedBlockingQueue<>(), r -> new Thread(r, "Thread_PushFile_" + r.hashCode()));
//
//    /**
//     * 装饰对象
//     */
//    private final PixelCanvas pixelCanvas;
//
//    /**
//     * 上次推送图片的时间戳（初始化为当前时间戳）
//     */
//    private long lastPushTime;
//
//    // TODO: 2021/7/2 需要修改为redis获取
//    /**
//     * 推送计数器
//     */
//    private AtomicInteger counter;
//
//    public PixelCanvasDecorator(ArrayPixelCanvas pixelCanvas) {
//        this(pixelCanvas, 1);
//    }
//
//    public PixelCanvasDecorator(ArrayPixelCanvas pixelCanvas, int currentCount) {
//        this.pixelCanvas = pixelCanvas;
//        this.lastPushTime = System.currentTimeMillis();
//        this.counter = new AtomicInteger(currentCount);
//    }
//
//    @Override
//    public int getId() {
//        return this.pixelCanvas.getId();
//    }
//
//    @Override
//    public int getWidth() {
//        return this.pixelCanvas.getWidth();
//    }
//
//    @Override
//    public int getHeight() {
//        return this.pixelCanvas.getHeight();
//    }
//
//    @Override
//    public int getSize() {
//        return this.pixelCanvas.getSize();
//    }
//
//    @Override
//    public void update(int wPos, int hPos, Color color) {
//        this.pixelCanvas.update(wPos, hPos, color);
////        this.tryPushImage();
//    }
//
//    /**
//     * 尝试将当前的像素数据推送成图片
//     */
//    private void tryPushImage() {
//        long current = System.currentTimeMillis();
//        if (current - this.lastPushTime > MAX_PUSH_FILE_IDLE_TIME) {
//            PUSH_FILE_EXECUTOR_SERVICE.submit(()->this.flush());
//            this.lastPushTime = current;
//        }
//    }
//
//    @Override
//    public String[][] getRgbStringArray() {
//        return this.pixelCanvas.getRgbStringArray();
//    }
//
//    @Override
//    public void flush() {
////        int[][] data = ((ArrayPixelData) this.getCanvasDataClone()).getImageArray();
////        String filePathName = "D:\\img\\result" + this.counter.getAndIncrement() + ".jpg";
////        ImagePusher imagePusher = new LocalImagePusher(data, filePathName);
////        imagePusher.push();
//    }
//}
